// 移除复制限制
let isEnabled = true;
let observer = null;

function removeCopyRestrictions() {
    if (!isEnabled) return;

    // 启用右键菜单
    document.addEventListener('contextmenu', function (e) {
        if (!isEnabled) return;
        e.stopPropagation();
        return true;
    }, true);

    // 启用选择功能
    document.addEventListener('selectstart', function (e) {
        if (!isEnabled) return;
        e.stopPropagation();
        return true;
    }, true);

    // 启用复制功能
    document.addEventListener('copy', function (e) {
        if (!isEnabled) return;
        e.stopPropagation();
        return true;
    }, true);

    // 移除所有元素的复制相关限制
    function removeAttributes() {
        if (!isEnabled) return;
        
        const elements = document.getElementsByTagName('*');
        for (let element of elements) {
            try {
                // 移除禁止复制相关的CSS属性
                element.style.setProperty('user-select', 'auto', 'important');
                element.style.setProperty('-webkit-user-select', 'auto', 'important');
                element.style.setProperty('-moz-user-select', 'auto', 'important');
                element.style.setProperty('-ms-user-select', 'auto', 'important');
                
                // 移除oncopy、oncut、onpaste、onselectstart等事件
                element.oncopy = null;
                element.oncut = null;
                element.onpaste = null;
                element.onselectstart = null;
                element.oncontextmenu = null;
                
                // 移除不可复制属性
                element.removeAttribute('unselectable');
                element.removeAttribute('oncontextmenu');
                element.removeAttribute('oncopy');
                element.removeAttribute('oncut');
                element.removeAttribute('onpaste');
                element.removeAttribute('onselectstart');
            } catch (e) {
                // 忽略无法修改的元素
                continue;
            }
        }
    }

    // 初始执行一次
    removeAttributes();

    // 创建一个观察器来处理动态加载的内容
    if (observer) {
        observer.disconnect();
    }
    
    observer = new MutationObserver(function(mutations) {
        if (isEnabled) {
            removeAttributes();
        }
    });

    // 配置观察器
    if (document.body) {
        observer.observe(document.body, {
            childList: true,
            subtree: true
        });
    } else {
        // 如果body还不存在，等待它加载完成
        document.addEventListener('DOMContentLoaded', function() {
            observer.observe(document.body, {
                childList: true,
                subtree: true
            });
        });
    }
}

// 在页面加载时检查状态并执行
chrome.storage.local.get(['enabled'], (result) => {
    isEnabled = result.enabled !== false;
    if (isEnabled) {
        removeCopyRestrictions();
    }
});

// 监听状态变化
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
    if (request.action === "stateChanged") {
        isEnabled = request.enabled;
        if (isEnabled) {
            removeCopyRestrictions();
        } else if (observer) {
            observer.disconnect();
            observer = null;
        }
        // 发送响应表示消息已收到
        sendResponse({ success: true });
    }
    return true; // 保持消息通道开放
});
